A compiler accepts as input a source code in a high-level programming language or some other equivalent high level semantic representation of a computer program. The compiler converts or “compiles” the source code into machine language code, i.e., binary code in ones and zeros, which is executable on a data processing system or machine. The machine language code produced from a compiler is also called an executable code, or simply an executable. Many compilers are presently available for compiling source code written in a variety of programming languages.
Debugging is the process of determining a cause of an undesirable operation of an executable. Some examples of an undesirable operation include, but are not limited to, an error during the execution of the executable, an error caused elsewhere in the machine as a result of the execution, a malfunction of a system, incorrect manipulation of data, an incorrect or faulty operation of the executable, an undesirable rate or speed of performance of the machine or the executable during the execution, an undesirable output or a lack of an output during the execution, an adverse effect of the execution, and the like.
A debugger is a software tool, which controls and examines an execution of an executable, to assist in locating an operation in the executable, which may be contributing to the undesirable operation. Many debuggers are presently available for this purpose.
A profile of a code, such as of a portion of a source code or a portion of an executable code, includes a frequency of use of the code during the execution of an executable corresponding to the code. In other words, the higher a number of times a portion is called, used, or executed during the execution, the higher the profile of the portion. Many profilers are presently available for this purpose. The number of times a portion of code is called, used, or executed during an execution of the code is interchangeably referred to herein as a “count” or a “frequency”.